home *** CD-ROM | disk | FTP | other *** search
/ Aminet 15 / Aminet 15 - Nov 1996.iso / Aminet / dev / gcc / ixemsdk.lha / man / cat2 / getsockopt.0 < prev    next >
Text File  |  1996-09-01  |  11KB  |  183 lines

  1.  
  2. GETSOCKOPT(2)              UNIX Programmer's Manual              GETSOCKOPT(2)
  3.  
  4. NNAAMMEE
  5.      ggeettssoocckkoopptt, sseettssoocckkoopptt - get and set options on sockets
  6.  
  7. SSYYNNOOPPSSIISS
  8.      ##iinncclluuddee <<ssyyss//ttyyppeess..hh>>
  9.      ##iinncclluuddee <<ssyyss//ssoocckkeett..hh>>
  10.  
  11.      _i_n_t
  12.      ggeettssoocckkoopptt(_i_n_t _s, _i_n_t _l_e_v_e_l, _i_n_t _o_p_t_n_a_m_e, _v_o_i_d _*_o_p_t_v_a_l, _i_n_t _*_o_p_t_l_e_n)
  13.  
  14.      _i_n_t
  15.      sseettssoocckkoopptt(_i_n_t _s, _i_n_t _l_e_v_e_l, _i_n_t _o_p_t_n_a_m_e, _c_o_n_s_t _v_o_i_d _*_o_p_t_v_a_l, _i_n_t _o_p_t_l_e_n)
  16.  
  17. DDEESSCCRRIIPPTTIIOONN
  18.      GGeettssoocckkoopptt() and sseettssoocckkoopptt() manipulate the _o_p_t_i_o_n_s associated with a
  19.      socket.  Options may exist at multiple protocol levels; they are always
  20.      present at the uppermost ``socket'' level.
  21.  
  22.      When manipulating socket options the level at which the option resides
  23.      and the name of the option must be specified.  To manipulate options at
  24.      the socket level, _l_e_v_e_l is specified as SOL_SOCKET. To manipulate options
  25.      at any other level the protocol number of the appropriate protocol con-
  26.      trolling the option is supplied.  For example, to indicate that an option
  27.      is to be interpreted by the TCP protocol, _l_e_v_e_l should be set to the pro-
  28.      tocol number of TCP; see getprotoent(3).
  29.  
  30.      The parameters _o_p_t_v_a_l and _o_p_t_l_e_n are used to access option values for
  31.      sseettssoocckkoopptt().  For ggeettssoocckkoopptt() they identify a buffer in which the value
  32.      for the requested option(s) are to be returned.  For ggeettssoocckkoopptt(), _o_p_t_l_e_n
  33.      is a value-result parameter, initially containing the size of the buffer
  34.      pointed to by _o_p_t_v_a_l, and modified on return to indicate the actual size
  35.      of the value returned.  If no option value is to be supplied or returned,
  36.      _o_p_t_v_a_l may be NULL.
  37.  
  38.      _O_p_t_n_a_m_e and any specified options are passed uninterpreted to the appro-
  39.      priate protocol module for interpretation.  The include file
  40.      <_s_y_s_/_s_o_c_k_e_t_._h> contains definitions for socket level options, described
  41.      below.  Options at other protocol levels vary in format and name; consult
  42.      the appropriate entries in section 4 of the manual.
  43.  
  44.      Most socket-level options utilize an _i_n_t parameter for _o_p_t_v_a_l. For
  45.      sseettssoocckkoopptt(), the parameter should be non-zero to enable a boolean op-
  46.      tion, or zero if the option is to be disabled.  SO_LINGER uses a _s_t_r_u_c_t
  47.      _l_i_n_g_e_r parameter, defined in <_s_y_s_/_s_o_c_k_e_t_._h>, which specifies the desired
  48.      state of the option and the linger interval (see below).  SO_SNDTIMEO and
  49.      SO_RCVTIMEO use a _s_t_r_u_c_t _t_i_m_e_v_a_l parameter, defined in <_s_y_s_/_t_i_m_e_._h>.
  50.  
  51.      The following options are recognized at the socket level.  Except as not-
  52.      ed, each may be examined with ggeettssoocckkoopptt() and set with sseettssoocckkoopptt().
  53.  
  54.            SO_DEBUG        enables recording of debugging information
  55.            SO_REUSEADDR    enables local address reuse
  56.            SO_REUSEPORT    enables duplicate address and port bindings
  57.            SO_KEEPALIVE    enables keep connections alive
  58.            SO_DONTROUTE    enables routing bypass for outgoing messages
  59.            SO_LINGER       linger on close if data present
  60.            SO_BROADCAST    enables permission to transmit broadcast messages
  61.            SO_OOBINLINE    enables reception of out-of-band data in band
  62.            SO_SNDBUF       set buffer size for output
  63.            SO_RCVBUF       set buffer size for input
  64.  
  65.  
  66.            SO_SNDLOWAT     set minimum count for output
  67.            SO_RCVLOWAT     set minimum count for input
  68.            SO_SNDTIMEO     set timeout value for output
  69.            SO_RCVTIMEO     set timeout value for input
  70.            SO_TYPE         get the type of the socket (get only)
  71.            SO_ERROR        get and clear error on the socket (get only)
  72.  
  73.      SO_DEBUG enables debugging in the underlying protocol modules.
  74.      SO_REUSEADDR indicates that the rules used in validating addresses sup-
  75.      plied in a bind(2) call should allow reuse of local addresses.
  76.      SO_REUSEPORT allows completely duplicate bindings by multiple processes
  77.      if they all set SO_REUSEPORT before binding the port.  This option per-
  78.      mits multiple instances of a program to each receive UDP/IP multicast or
  79.      broadcast datagrams destined for the bound port.  SO_KEEPALIVE enables
  80.      the periodic transmission of messages on a connected socket.  Should the
  81.      connected party fail to respond to these messages, the connection is con-
  82.      sidered broken and processes using the socket are notified via a SIGPIPE
  83.      signal when attempting to send data.  SO_DONTROUTE indicates that outgo-
  84.      ing messages should bypass the standard routing facilities.  Instead,
  85.      messages are directed to the appropriate network interface according to
  86.      the network portion of the destination address.
  87.  
  88.      SO_LINGER controls the action taken when unsent messages are queued on
  89.      socket and a close(2) is performed.  If the socket promises reliable de-
  90.      livery of data and SO_LINGER is set, the system will block the process on
  91.      the close attempt until it is able to transmit the data or until it de-
  92.      cides it is unable to deliver the information (a timeout period, termed
  93.      the linger interval, is specified in the sseettssoocckkoopptt() call when SO_LINGER
  94.      is requested).  If SO_LINGER is disabled and a close is issued, the sys-
  95.      tem will process the close in a manner that allows the process to contin-
  96.      ue as quickly as possible.
  97.  
  98.      The option SO_BROADCAST requests permission to send broadcast datagrams
  99.      on the socket.  Broadcast was a privileged operation in earlier versions
  100.      of the system.  With protocols that support out-of-band data, the
  101.      SO_OOBINLINE option requests that out-of-band data be placed in the nor-
  102.      mal data input queue as received; it will then be accessible with recv or
  103.      read calls without the MSG_OOB flag.  Some protocols always behave as if
  104.      this option is set.  SO_SNDBUF and SO_RCVBUF are options to adjust the
  105.      normal buffer sizes allocated for output and input buffers, respectively.
  106.      The buffer size may be increased for high-volume connections, or may be
  107.      decreased to limit the possible backlog of incoming data.  The system
  108.      places an absolute limit on these values.
  109.  
  110.      SO_SNDLOWAT is an option to set the minimum count for output operations.
  111.      Most output operations process all of the data supplied by the call, de-
  112.      livering data to the protocol for transmission and blocking as necessary
  113.      for flow control.  Nonblocking output operations will process as much da-
  114.      ta as permitted subject to flow control without blocking, but will pro-
  115.      cess no data if flow control does not allow the smaller of the low water
  116.      mark value or the entire request to be processed.  A select(2) operation
  117.      testing the ability to write to a socket will return true only if the low
  118.      water mark amount could be processed.  The default value for SO_SNDLOWAT
  119.      is set to a convenient size for network efficiency, often 1024.
  120.      SO_RCVLOWAT is an option to set the minimum count for input operations.
  121.      In general, receive calls will block until any (non-zero) amount of data
  122.      is received, then return with the smaller of the amount available or the
  123.      amount requested.  The default value for SO_RCVLOWAT is 1.  If
  124.      SO_RCVLOWAT is set to a larger value, blocking receive calls normally
  125.      wait until they have received the smaller of the low water mark value or
  126.      the requested amount.  Receive calls may still return less than the low
  127.      water mark if an error occurs, a signal is caught, or the type of data
  128.      next in the receive queue is different than that returned.
  129.  
  130.      SO_SNDTIMEO is an option to set a timeout value for output operations.
  131.      It accepts a _s_t_r_u_c_t _t_i_m_e_v_a_l parameter with the number of seconds and mi-
  132.      croseconds used to limit waits for output operations to complete.  If a
  133.      send operation has blocked for this much time, it returns with a partial
  134.      count or with the error EWOULDBLOCK if no data were sent.  In the current
  135.      implementation, this timer is restarted each time additional data are de-
  136.      livered to the protocol, implying that the limit applies to output por-
  137.      tions ranging in size from the low water mark to the high water mark for
  138.      output.  SO_RCVTIMEO is an option to set a timeout value for input opera-
  139.      tions.  It accepts a _s_t_r_u_c_t _t_i_m_e_v_a_l parameter with the number of seconds
  140.      and microseconds used to limit waits for input operations to complete.
  141.      In the current implementation, this timer is restarted each time addi-
  142.      tional data are received by the protocol, and thus the limit is in effect
  143.      an inactivity timer.  If a receive operation has been blocked for this
  144.      much time without receiving additional data, it returns with a short
  145.      count or with the error EWOULDBLOCK if no data were received.
  146.  
  147.      Finally, SO_TYPE and SO_ERROR are options used only with ggeettssoocckkoopptt().
  148.      SO_TYPE returns the type of the socket, such as SOCK_STREAM; it is useful
  149.      for servers that inherit sockets on startup.  SO_ERROR returns any pend-
  150.      ing error on the socket and clears the error status.  It may be used to
  151.      check for asynchronous errors on connected datagram sockets or for other
  152.      asynchronous errors.
  153.  
  154. RREETTUURRNN VVAALLUUEESS
  155.      A 0 is returned if the call succeeds, -1 if it fails.
  156.  
  157. EERRRROORRSS
  158.      The call succeeds unless:
  159.  
  160.      [EBADF]       The argument _s is not a valid descriptor.
  161.  
  162.      [ENOTSOCK]    The argument _s is a file, not a socket.
  163.  
  164.      [ENOPROTOOPT]
  165.                    The option is unknown at the level indicated.
  166.  
  167.      [EFAULT]      The address pointed to by _o_p_t_v_a_l is not in a valid part of
  168.                    the process address space.  For ggeettssoocckkoopptt(), this error
  169.                    may also be returned if _o_p_t_l_e_n is not in a valid part of
  170.                    the process address space.
  171.  
  172. SSEEEE AALLSSOO
  173.      ioctl(2),  socket(2),  getprotoent(3) protocols(5)
  174.  
  175. BBUUGGSS
  176.      Several of the socket options should be handled at lower levels of the
  177.      system.
  178.  
  179. HHIISSTTOORRYY
  180.      The ggeettssoocckkoopptt() system call appeared in 4.2BSD.
  181.  
  182. 4.3-Reno Berkeley Distribution  April 19, 1994                               3
  183.